iT邦幫忙

2023 iThome 鐵人賽

DAY 24
1
AI & Data

dbt: 告別過時的SQL開發流程系列 第 24

DAY 24 - dbt Core 入門 (2) - 在本機開發的基本操作

  • 分享至 

  • xImage
  •  

今天要在聊 dbt Core 如何執行基本的 dbt 操作。
在本機的 VS Code 或其他 IDE 開發,與 dbt Cloud 不同,沒有瀏覽器的 GUI 可以使用,所以一般的操作流程會有所不同。
雖然 VS Code 有許多相關的 extension 可以安裝,但我想先從不使用任何 extension 開始,如此一來也可以套用到任何開發環境,不限於 VS Code。


dbt 基本操作

基本的指令例如 dbt rundbt build 都和 dbt Cloud 相同,只是要下在 terminal。
如果用 VS Code 或 Pycharm 都有內建 terminal,但要用作業系統內建的 termial 也可以。
如果安裝在 venv 的話,記得要先切換進 venv 才能執行指令。
https://ithelp.ithome.com.tw/upload/images/20230910/20159575aqXyw6bEX6.png

只是下指令的話沒有什麼不同,但當要除錯時,作法就會有所不同。

查看 debug logs

我們在 terminal 執行時,可以看到 console logs,但如果要查看詳細的 debug logs,則需要到此路徑
logs/dbt.log
https://ithelp.ithome.com.tw/upload/images/20230910/20159575A1HJAvIBUt.png

target 資料夾

target/compiled

每次在執行 dbt run 或 dbt build 時,dbt engine 會先 complile model 的語法。
所謂 compile 就是將 Jinja SQL 編譯成 SQL,在 BigQuery 可以直接執行的語法。

compile 的結果可以在 target/compiled 資料夾底下看到。

舉例來說下圖可以看到原本在 dbt model 中,{{ ref('stg_customers') }} 依 project 的設定,被替換成了實際的 table 名稱,`dbt-demo-2023`.`dbt_dev_stacy`.`stg_customers`

https://ithelp.ithome.com.tw/upload/images/20230910/201595759BPLDVvYrF.png

target/run

上面 target/compiled 看到的單純是 select 語法,但在 target/run 底下的檔案內容,加上了 create table 的動作。
https://ithelp.ithome.com.tw/upload/images/20230910/201595751r0189mtoh.png


dbt Core 常用指令

接下來分享四個 dbt Core 會用到,但 dbt Cloud 不太會使用的四個指令。

  • dbt debug
  • dbt show
  • dbt compile
  • dbt docs serve

dbt debug

昨天已經示範過了,基本的檢查,例如 Python 是否成功安裝、profiles.yml 所設定的資料庫,是否能成功連線。

dbt debug

https://ithelp.ithome.com.tw/upload/images/20230910/20159575DRRiKPPKC8.png

dbt show

預覽前 n 筆資料

dbt show --select customers

https://ithelp.ithome.com.tw/upload/images/20230910/20159575WTT8LcKxOe.png

預設會顯示 5 筆,但也可以自行設定需要的筆數。

dbt show --select customers --limit 10

https://ithelp.ithome.com.tw/upload/images/20230910/20159575NwP6Skytgy.png

dbt compile

將 model compile 成 SQL 語法,但不執行 run。

compile 後的語法除了會存在 targer/compiled 資料夾之外,也會顯示在 console。

dbt compile --select customers

https://ithelp.ithome.com.tw/upload/images/20230910/20159575ZmuBOLZ8b8.png

dbt docs serve

先執行指令產出相關檔案

dbt docs generate

https://ithelp.ithome.com.tw/upload/images/20230910/20159575VlsOfbWgzy.png

再執行

dbt docs serve

https://ithelp.ithome.com.tw/upload/images/20230910/20159575c5VDczzK9N.png

就可以在本機看到 documentation
https://ithelp.ithome.com.tw/upload/images/20230910/20159575QVwTiSERMx.png


今日小結&明日預告

明天的主題:除了基本操作外,如何運用 VS Code Extension - dbt Power User。

參考資料


歡迎加入 dbt community
對 dbt 或 data 有興趣 👋?歡迎加入 dbt community 到 #local-taipei 找我們,也有實體 Meetup 請到 dbt Taipei Meetup 報名參加


上一篇
DAY 23 - dbt Core 入門 (1) - 設定本機環境
下一篇
DAY 25 - dbt Core 入門 (3) - dbt Power User
系列文
dbt: 告別過時的SQL開發流程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言